//和广告相关的路由地址
const express = require("express");
let router = express.Router();
let { uploadimg } = require("../util"); //引入可以接收前端传递过来的数据的工具
const advModel = require("../models/advModel.js");

// 接收前端提交过来的数据和文件
router.post("/addadv", async (req, res) => {
  // console.log(req.body);
  //这里使用req.body无法获取前端提交过来的数据
  // 可以通过 from的parse方法 格式化req里的数据和文件；
  try {
    let result = await uploadimg(req);
    console.log(result); //获取数据成功
    result.time = new Date().toLocaleDateString(); //获取数据提交到服务器的日期
    console.log(result);

    //数据全部接收完成后再添加到数据库
    let resobj = await advModel.create(result);
    console.log(resobj);
    res.json({
      //设置返还结果
      info: "添加广告成功",
      status: 1,
    });
  } catch (err) {
    res.json({
      info: "添加广告失败",
      status: 0,
      err,
    });
  }
});

//从数据库里获取添加成功后的广告资料
router.get("/getdata", async (req, res) => {
  try {
    let advdata = await advModel.find();

    // 后端的分页逻辑
    // 一、计算页码 ， 把页码传给前端
    let totalCount = advdata.length; //所有数据的数量
    let perpage = 3; //设置每页显示的数据条数
    let pageCount = Math.ceil(totalCount / perpage); //计算总的页码

    // 根据前端传递的页码返还对应的数据
    let { p } = req.query;
    console.log(p); //p为当前的页码
    // 根据页码 查询对应的数据
    let successData = await advModel
      .find()
      .skip((p - 1) * perpage)
      .limit(perpage);
    res.json({
      info: "获取广告资料成功",
      status: 1,
      advs: successData, //把过滤后的数据传递给前端
      pageCount, //把总页码数传递给前端
    });
  } catch (err) {
    res.json({
      info: "获取广告资料失败",
      status: 0,
      err,
    });
  }
});

//删除广告资料的路由
router.delete("/deladv", async (req, res) => {
  let { _id } = req.query; // 获取delete 传递过来的id数据
  console.log(_id);
  try {
    //通过id删除数据库里对应的数据
    let resobj = await advModel.deleteOne({ _id });
    console.log(resobj);
    res.json({
      info: "删除成功",
      status: 1,
      resobj,
    });
  } catch (err) {
    res.json({
      info: "删除失败",
      status: 0,
      err,
    });
  }
});
module.exports = router;
